Théorie des Couches Minces Optiques

Formalisme matriciel de Macleod et modélisation numérique

Du L2 au M2 — trois niveaux de lecture

Ce document détaille la physique et les équations permettant de calculer les propriétés optiques d'un empilement de couches minces. Conçu pour les étudiants en physique numérique et optique, il tisse le lien entre l'intuition physique (interférences), les équations de Maxwell, et l'implémentation numérique via la méthode des matrices de transfert (TMM).

🟢 Niveau 1
Intuition & Concepts physiques Découverte des interférences, analogies visuelles et schémas clés.
🔵 Niveau 2
Formalisme & Calculs d'Ingénieur Équations de Maxwell, matrices 2×2, calcul de $R$ et $T$, code Python.
🎓 Niveau 3
Expertise & Pièges critiques Coupures complexes (`Branch cut`), profil d'onde $|E(z)|^2$, flux de Poynting.

Sommaire du cours

1. Introduction aux interférences en couches minces Niveau 1 2. Conventions et notations (Indices complexes) Niveau 2 3. Des équations de Maxwell à la matrice de transfert Niveau 2
3.1 Équations de Maxwell en régime harmonique 3.2 Équation d'onde et équation de Helmholtz 3.3 Conditions de continuité aux interfaces (Conditions aux limites) 3.4 Ondes progressives et Condition d'onde sortante (Sommerfeld) 3.5 Dérivation analytique de la matrice caractéristique 2×2
4. Méthode des matrices de transfert (TMM) Niveau 2 5. Polarisation (s et p) et admittance optique Niveau 2 6. Coefficients de Fresnel (R, T) et vecteur de Poynting Niveau 2 7. Substrat d'épaisseur finie (réflexions incohérentes) Niveau 2 8. [Avancé] Profil du champ électrique $|E(z)|^2$ Niveau 3 9. Exemples d'application (Couche AR et Filtre multicouche) Niveau 1 & 2 10. Implémentation numérique (Code Python) Niveau 2

1. Introduction aux interférences en couches minces Niveau 1

L'intuition physique Avez-vous déjà remarqué les couleurs irisées sur une bulle de savon ou une flaque d'huile ? C'est l'optique des couches minces en action. Une partie de la lumière est réfléchie à la première interface (air/huile), tandis qu'une autre partie pénètre, se propage, et est réfléchie à la seconde interface (huile/eau).

Lorsque ces rayons se recombinent, ils interfèrent. Selon l'épaisseur de la couche, certaines longueurs d'onde s'annulent (interférence destructive) et d'autres se renforcent (constructive). L'ingénierie optique consiste à empiler des matériaux avec une précision nanométrique pour façonner sur mesure ces spectres de réflexion et transmission.

Au lieu de sommer à la main la série infinie des réflexions multiples dans chaque couche (formule d'Airy), on utilise une approche globale dérivée de l'électromagnétisme : la méthode matricielle. Chaque couche est modélisée par une matrice 2×2 ; l'effet d'un empilement de 50 couches n'est que le produit de 50 matrices.

Milieu incident (Air, n₀ ≈ 1) Couche mince (Indice n₁, Épaisseur d) Substrat (Verre, n_sub ≈ 1.5) Lumière incidente Réflexion 1ère face (R₁) Réflexion 2ème face (R₂) Les rayons R₁ et R₂ interfèrent dans l'air.

2. Conventions et notations Niveau 2

Pour garantir une lecture sans ambiguïté, l'ensemble des paramètres, variables et symboles utilisés dans ce document est regroupé ci-dessous selon leur domaine physique :

2.1 Paramètres de l'onde et grandeurs spatio-temporelles

SymboleNomUnitéDéfinition & Signification physique
$\lambda$Longueur d'onde$\text{nm}$ (ou $\mu\text{m}$)Longueur d'onde de la lumière incidente dans le vide ($c/f$).
$\omega$Pulsation angulaire$\text{rad}\cdot\text{s}^{-1}$$\omega = 2\pi c / \lambda = 2\pi f$, fréquence angulaire de l'oscillation temporelle.
$c$Célérité de la lumière$\text{m}\cdot\text{s}^{-1}$Vitesse de la lumière dans le vide ($c = 1/\sqrt{\varepsilon_0\mu_0} \approx 3 \times 10^8\text{ m/s}$).
$k_0$Nombre d'onde dans le vide$\text{rad}\cdot\text{m}^{-1}$$k_0 = \omega/c = 2\pi/\lambda$.
$z$Coordonnée spatiale normale$\text{nm}$ (ou $\text{m}$)Axe orienté vers le haut ($\uparrow$), avec $z=0$ à la surface du substrat.
$z_j$Altitude d'interface$\text{nm}$$z_j = \sum_{k=1}^j d_k$, altitude du sommet de la couche $j$ ($z_0 = 0$).
$\theta_0$Angle d'incidence$\text{rad}$ ou $^\circ$Angle du faisceau incident dans l'air par rapport à la normale $z$.
$\theta_j$Angle de réfraction$\text{rad}$ (complexe)Angle dans la couche $j$ ($\hat{n}_j \sin\theta_j = n_0 \sin\theta_0$).
$S_0$Invariant de Snell-Descartessans dim.$S_0 = n_0 \sin\theta_0$, invariant le long de tout l'empilement multicouche.
$k_x$Composante transverse d'onde$\text{rad}\cdot\text{m}^{-1}$$k_x = k_0 S_0 = k_0 n_0 \sin\theta_0$ (conservée par invariance par translation).
$k_{z,j}$Composante normale d'onde$\text{rad}\cdot\text{m}^{-1}$$k_{z,j} = k_0 \hat{n}_j \cos\theta_j = k_0 \sqrt{\hat{n}_j^2 - S_0^2}$.

2.2 Milieux, matériaux et empilement de couches

SymboleNomUnitéDéfinition & Signification physique
$n$Indice de réfraction (réel)sans dim.Ralentissement de la vitesse de phase ($v_\phi = c/n$) dans le matériau. Pour un diélectrique transparent, $n \ge 1$ ; un métal peut avoir $n < 1$ (argent du § 9 : $n = 0.12$).
$\kappa$Coefficient d'extinctionsans dim.Atténuation de l'onde par absorption diélectrique/ohmique ($\kappa \ge 0$).
$\hat{n}$Indice de réfraction complexesans dim.$\hat{n} = n - i\kappa$ (convention Macleod $e^{+i\omega t}$ imposant $\mathrm{Im}(\hat{n}) \le 0$).
$n_0, \eta_0$Indice & Admittance de l'airsans dim. / $\mathcal{Y}_0$Milieu incident semi-infini au sommet ($z \ge z_N$, avec $n_0 = 1.0$).
$n_{sub}, \eta_{sub}$Indice & Admittance du substratsans dim. / $\mathcal{Y}_0$Milieu émergent semi-infini à la base de l'empilement ($z \le 0$).
$d$ ou $d_j$Épaisseur physique (géométrique)$\text{nm}$Épaisseur métrique de la couche ($d_j = z_j - z_{j-1}$).
$nd$ ou $n_j d_j$Épaisseur optique$\text{nm}$Chemin optique effectif traversé par la lumière ($n \times d$).
$\delta$ ou $\delta_j$Déphasage optique de couche$\text{rad}$$\delta_j = k_{z,j} d_j = \frac{2\pi}{\lambda} \hat{n}_j d_j \cos\theta_j$.
$N$Nombre total de couchesentierNombre de couches du multicouche (numérotées de $j=1$ à la base à $j=N$ au sommet).

2.3 Électromagnétisme, champs et formalisme matriciel (Macleod)

SymboleNomUnitéDéfinition & Signification physique
$\vec{E}, \vec{H}$Champs $\vec{E}$ et $\vec{H}$$\text{V}\cdot\text{m}^{-1}$, $\text{A}\cdot\text{m}^{-1}$Vecteurs champs électrique et magnétique complexes.
$E_\parallel, H_\parallel$Champs tangentiels$\text{V}\cdot\text{m}^{-1}$, $\text{A}\cdot\text{m}^{-1}$Composantes parallèles aux plans des interfaces (strictement continues à $z=z_j$).
$E_j^+, E_j^-$Ondes montante / descendante$\text{V}\cdot\text{m}^{-1}$Amplitudes des ondes se propageant vers le haut ($+$, réflexion) et vers le bas ($-$).
$\eta_j$Admittance optique inclinéesans dim. (norm.)Rapport des champs tangentiels $H_\parallel / E_\parallel$ dans la couche $j$.
$\eta_{j,s}$Admittance en polarisation TE (s)sans dim.$\eta_{j,s} = \hat{n}_j \cos\theta_j$ ($\vec{E}$ perpendiculaire au plan d'incidence).
$\eta_{j,p}$Admittance en polarisation TM (p)sans dim.$\eta_{j,p} = \hat{n}_j / \cos\theta_j$ ($\vec{H}$ perpendiculaire au plan d'incidence).
$M_j$Matrice de transfert de couchematrice $2\times 2$Relie $[E(z_j), H(z_j)]^T = M_j [E(z_{j-1}), H(z_{j-1})]^T$ ($\det M_j = 1$).
$M$Matrice caractéristique globalematrice $2\times 2$Produit ordonné de bas en haut : $M = M_N M_{N-1} \cdots M_1$.
$B, C$Vecteur de champ équivalentsans dim. / admittance$\begin{pmatrix} B \\ C \end{pmatrix} = M \begin{pmatrix} 1 \\ \eta_{sub} \end{pmatrix}$, champ total normalisé au sommet ($z=z_N$).

2.4 Coefficients optiques, bilans énergétiques & photométrie

SymboleNomUnitéDéfinition & Signification physique
$r, t$Coefficients de Fresnel complexessans dim. (complexes)Amplitudes : $r = \frac{\eta_0 B - C}{\eta_0 B + C}$ (réflexion) et $t = \frac{2\eta_0}{\eta_0 B + C}$ (transmission).
$R$Réflectance énergétiquesans dim. ($[0, 1]$)Fraction de puissance réfléchie : $R = |r|^2$.
$T$Transmittance énergétiquesans dim. ($[0, 1]$)Fraction de puissance transmise : $T = \frac{\mathrm{Re}(\eta_{sub})}{\mathrm{Re}(\eta_0)} |t|^2$.
$A$Absorbance énergétiquesans dim. ($[0, 1]$)Fraction de puissance absorbée dans les couches : $A = 1 - R - T$.
$\vec{S}, S_z$Vecteur de Poynting & Flux normal$\text{W}\cdot\text{m}^{-2}$Densité de puissance traversant l'interface : $S_z = \frac{1}{2}\mathrm{Re}(\eta) |E_\parallel|^2$.
$R_{total}, T_{total}$Coefficients avec face arrièresans dim.Coefficients photométriques incohérents tenant compte de la seconde face du verre.
Précision sur les unités d'admittance optique ($\eta$) et les constantes fondamentales

Convention de repère et de numérotation : l'axe $z$ est orienté vers le haut ($\uparrow$), dans le sens de croissance physique du dépôt. Le plan $z=0$ correspond à la surface du substrat, la couche 1 est collée au substrat ($0 \le z \le d_1$), et la couche $N$ est la dernière couche déposée, en contact avec l'air à $z = z_N = \sum_{j=1}^N d_j$.

Choix du repère spatial : Pourquoi $z=0$ au substrat et orienté vers le haut ? Ce choix correspond exactement à la réalité expérimentale du dépôt en laboratoire (PVD, ALD, évaporation) :
Démonstration fondamentale : Pourquoi $\mathrm{Im}(\hat{n}) \le 0$ avec la convention $e^{+i\omega t}$ ?

En électromagnétisme harmonique, le choix de la dépendance temporelle fixe de manière univoque le signe de la partie imaginaire de l'indice de réfraction. Démonstration :

1. Sous la convention de Macleod / Ingénierie, les champs varient en $e^{+i\omega t}$. Une onde plane se propageant dans le sens direct ($+z$) s'écrit :

$$\vec{E}(z,t) = \vec{E}_0 \, e^{i(\omega t - k z)} \quad \text{avec} \quad k = k_0 \hat{n} = \frac{\omega}{c} \hat{n}$$

2. Écrivons l'indice complexe avec sa partie réelle $n$ et sa partie imaginaire $\mathrm{Im}(\hat{n})$ :

$$\vec{E}(z,t) = \vec{E}_0 \, e^{i\left(\omega t - k_0 (n + i\,\mathrm{Im}(\hat{n})) z\right)} = \vec{E}_0 \, \underbrace{e^{k_0 \mathrm{Im}(\hat{n}) z}}_{\text{Atténuation spatiale}} \, \underbrace{e^{i(\omega t - k_0 n z)}}_{\text{Phase oscillante}}$$

3. Pour un milieu passif absorbant, l'amplitude doit décroître exponentiellement selon $e^{-k_0 \kappa z}$ (loi de Beer-Lambert, avec le coefficient d'extinction $\kappa \ge 0$).

Par identification directe du facteur d'amplitude :

$$\mathrm{Im}(\hat{n}) = -\kappa \le 0 \implies \mathbf{\hat{n} = n - i\kappa \quad (\kappa \ge 0)}$$

Avertissement : Si vous utilisiez par erreur un signe plus ($\hat{n} = n + i\kappa$) avec $e^{+i\omega t}$, le facteur spatial deviendrait $e^{+k_0 \kappa z}$, simulant une amplification exponentielle non physique (création spontanée d'énergie infinie dans le matériau passif).

Culture scientifique : L'autre convention ($e^{-i\omega t}$) en Physique Théorique Il est capital de savoir qu'une seconde convention coexiste dans la littérature scientifique (physique quantique, optique fondamentale, traités de Born & Wolf, Jackson, Landau) :

Dans cette seconde convention, le temps est choisi en $e^{-i\omega t}$. L'onde se propageant vers $+z$ s'écrit alors $\vec{E}(z,t) = \vec{E}_0 e^{-i(\omega t - kz)} = \vec{E}_0 e^{i(kz - \omega t)}$. Pour assurer l'atténuation en $e^{-k_0 \kappa z}$, l'indice complexe s'écrit alors avec un signe plus :

$$\mathbf{\hat{n} = n + i\kappa \quad (\text{Convention Physique Théorique } e^{-i\omega t})}$$
CritèreConvention Couches Minces (Macleod)Convention Physique Théorique (Born & Wolf)
Dépendance temporelle$e^{+i\omega t}$ (ou $\partial_t \to +i\omega$)$e^{-i\omega t}$ (ou $\partial_t \to -i\omega$)
Onde progressive ($+z$)$\exp[i(\omega t - kz)]$$\exp[-i(\omega t - kz)] = \exp[i(kz - \omega t)]$
Indice complexe $\hat{n}$$\mathbf{\hat{n} = n - i\kappa}$$\mathbf{\hat{n} = n + i\kappa}$
Partie imaginaire $\mathrm{Im}(\hat{n})$Strictement négative ($-\kappa \le 0$)Strictement positive ($+\kappa \ge 0$)
Usage dominantLogiciels de couches minces (OptiLayer, TFCalc, Code Python de ce cours)Électrodynamique classique, mécanique quantique, optique non linéaire

Conseil pour l'ingénieur : Les bases de données (ex: refractiveindex.info) fournissent toujours $k$ (ou $\kappa$) sous forme d'un nombre réel positif. Dans notre formalisme de Macleod, vous devez toujours injecter n_complex = n - 1j * k.

3. Des équations de Maxwell à la matrice de transfert Niveau 2

Cette section établit rigoureusement, à partir des premiers principes de l'électromagnétisme, comment les équations de Maxwell se réduisent à l'équation de Helmholtz, puis comment les conditions aux limites et la condition d'onde sortante permettent de formuler la matrice de transfert $2 \times 2$ d'une couche mince.

3.1 Équations de Maxwell en régime harmonique

On adopte la convention temporelle de Macleod où tous les champs oscillent à la pulsation $\omega$ selon $e^{+i\omega t}$. Pour un champ électrique réel $\vec{\mathcal{E}}_{phys}(\vec{r}, t) = \mathrm{Re}[\vec{E}(\vec{r}) \, e^{i\omega t}]$, la dérivation temporelle devient un simple produit algébrique : $\frac{\partial}{\partial t} \longrightarrow +i\omega$.

Dans un milieu diélectrique ou conducteur linéaire, homogène, isotrope (LHI) et non magnétique ($\mu_r = 1$), sans charges libres macroscopiques ($\rho = 0$), les équations de Maxwell s'écrivent sous forme complexe :

$$\begin{aligned} \nabla \cdot \vec{D} &= 0 \quad \text{avec} \quad \vec{D} = \varepsilon_0 \varepsilon_r \vec{E} & \text{(Maxwell-Gauss)} \\[6pt] \nabla \cdot \vec{B} &= 0 \quad \text{avec} \quad \vec{B} = \mu_0 \vec{H} & \text{(Maxwell-Thomson)} \\[6pt] \nabla \times \vec{E} &= -i\omega \mu_0 \vec{H} & \text{(Maxwell-Faraday)} \\[6pt] \nabla \times \vec{H} &= \vec{j} + i\omega \vec{D} = (\sigma + i\omega \varepsilon_0 \varepsilon_r)\vec{E} = i\omega \varepsilon_0 \hat{\varepsilon}_r \vec{E} & \text{(Maxwell-Ampère)} \end{aligned}$$

La permittivité diélectrique complexe relative $\hat{\varepsilon}_r$ unifie la constante diélectrique $\varepsilon_r$ et la conductivité ohmique $\sigma$. Elle est directement reliée à l'indice de réfraction complexe $\hat{n} = n - i\kappa$ :

$$\hat{\varepsilon}_r = \varepsilon_r - i\frac{\sigma}{\omega \varepsilon_0} = \hat{n}^2 = (n - i\kappa)^2 = (n^2 - \kappa^2) - 2in\kappa$$

3.2 Équation d'onde et équation de Helmholtz

En appliquant l'opérateur rotationnel à l'équation de Maxwell-Faraday et en utilisant l'identité vectorielle $\nabla \times (\nabla \times \vec{E}) = \nabla(\nabla \cdot \vec{E}) - \Delta \vec{E}$ avec $\nabla \cdot \vec{E} = 0$ (milieu homogène), on obtient :

$$\nabla(\underbrace{\nabla \cdot \vec{E}}_{=0}) - \Delta \vec{E} = -i\omega \mu_0 (\nabla \times \vec{H}) = -i\omega \mu_0 (i\omega \varepsilon_0 \hat{n}^2 \vec{E}) = \omega^2 \mu_0 \varepsilon_0 \hat{n}^2 \vec{E}$$

Comme la vitesse de la lumière dans le vide est $c = 1/\sqrt{\varepsilon_0 \mu_0}$ et le nombre d'onde dans le vide est $k_0 = \omega/c = 2\pi/\lambda$, on aboutit à l'équation vectorielle de Helmholtz :

$$\Delta \vec{E}(\vec{r}) + k_0^2 \hat{n}^2 \vec{E}(\vec{r}) = 0$$

Considérons une onde plane incidente se propageant dans le plan d'incidence $(x,z)$, où $z$ est l'axe perpendiculaire aux couches et $x$ l'axe parallèle aux interfaces. Par invariance par translation selon l'axe transverse $y$, on a $\partial/\partial y = 0$. La dépendance spatiale selon $x$ est commune à toutes les couches et fixée par le milieu incident :

$$\vec{E}(x,z) = \vec{\mathcal{E}}(z) \, e^{-i k_x x} \quad \text{avec} \quad k_x = k_0 n_0 \sin \theta_0 = k_0 S_0 \quad \text{(Invariant de Snell-Descartes)}$$

L'équation de Helmholtz se réduit alors à une équation différentielle scalaire unidimensionnelle selon la coordonnée $z$ pour chaque composante :

$$\frac{d^2 \vec{\mathcal{E}}(z)}{dz^2} + k_z^2 \vec{\mathcal{E}}(z) = 0 \quad \text{avec} \quad k_z = \sqrt{k_0^2 \hat{n}^2 - k_x^2} = k_0 \sqrt{\hat{n}^2 - S_0^2} = k_0 \hat{n} \cos \theta$$

3.3 Conditions de continuité aux interfaces (Conditions aux limites)

À chaque interface $z = z_k$ séparant deux milieux d'indices $\hat{n}_1$ et $\hat{n}_2$, les équations de Maxwell imposent des relations de continuité strictes. En intégrant Maxwell-Faraday et Maxwell-Ampère sur un contour rectangulaire infinitésimal chevauchant l'interface (largeur $\Delta l$, hauteur $\Delta h \to 0$), le flux magnétique et le courant traversant la boucle tendent vers zéro :

Milieu 1 (n̂₁, z < zₖ) Milieu 2 (n̂₂, z > zₖ) Interface z = zₖ Δh → 0 Δl E_∥(zₖ⁻) E_∥(zₖ⁺) ∮ E · dl = (E_∥₁ - E_∥₂) Δl + O(Δh) = 0 ⟹ E_∥(zₖ⁻) = E_∥(zₖ⁺)

En l'absence de charges et de courants superficiels libres, les composantes tangentielles du champ électrique et du champ magnétique sont strictement continues :

$$E_\parallel(z_k^-) = E_\parallel(z_k^+) \qquad \text{et} \qquad H_\parallel(z_k^-) = H_\parallel(z_k^+)$$

3.4 Ondes progressives et Condition d'onde sortante (Sommerfeld)

Dans chaque couche homogène $j$ (délimitée entre sa base $z_{j-1}$ et son sommet $z_j = z_{j-1} + d_j$), la solution générale de l'équation de Helmholtz 1D est la superposition exacte d'une onde se propageant vers le bas (vers le substrat, dans le sens des $z$ décroissants, notée $E_j^-$) et d'une onde réfléchie se propageant vers le haut (vers l'air, dans le sens des $z$ croissants, notée $E_j^+$) :

$$E_{\parallel, j}(z) = E_j^+ \, e^{-i k_{z,j} (z - z_{j-1})} + E_j^- \, e^{+i k_{z,j} (z - z_j)}$$
Milieu incident (Air, n₀) z ≥ z_N E₀⁻ (Incidente descendante) E₀⁺ = r · E₀⁻ (Réfléchie) Couche N (Sommet) (Indice n̂_N, Épaisseur d_N = z_N - z_{N-1}) Couche j (Indice n̂_j, Épaisseur d_j) Vers substrat : Eⱼ⁻ (descente) Vers air : Eⱼ⁺ (montée) Couche 1 (Base) (Indice n̂₁, Épaisseur d₁ = z₁) — collée au substrat (z = 0) Substrat semi-infini (n_sub) z ≤ 0 E_sub⁻ = t · E₀⁻ (Transmise vers -∞) E_sub⁺ = 0 (Sommerfeld) z z = z_N z_{N-1} z₁ = d₁ z = 0 (Substrat)
La condition de rayonnement de Sommerfeld (Onde sortante) Dans le substrat semi-infini ($z \le 0$), l'onde transmise s'éloigne vers le bas ($z \to -\infty$). En l'absence de source lumineuse située à $-\infty$, il ne peut exister aucune onde régressive remontant du fond du substrat : $$\mathbf{E_{sub}^+ = 0}$$ C'est cette condition aux limites essentielle à l'infini qui ferme mathématiquement le système et permet de calculer de manière unique les coefficients de Fresnel $r$ et $t$.

3.5 Dérivation analytique de la matrice caractéristique 2×2

Pour relier le champ magnétique tangentiel $H_\parallel$ au champ électrique tangentiel $E_\parallel$, on utilise l'équation de Maxwell-Faraday $\nabla \times \vec{E} = -i\omega\mu_0 \vec{H}$ :

Considérons une couche $j$ d'épaisseur $d$ comprise entre son interface supérieure d'entrée $a$ ($z = z_j$) et son interface inférieure de sortie $b$ ($z = z_{j-1} = z_j - d$) :

Interface a (z = z_j) Entrée (Haut) Interface b (z = z_{j-1}) Sortie (Bas) Couche j (Indice n̂_j, Épaisseur d_j = z_j - z_{j-1}) δ = k_z d Champs d'entrée : (E_a, H_a) Champs de sortie : (E_b, H_b) z z = z_j z = z_{j-1} [ E(z_j) , H(z_j) ]ᵀ = M_j · [ E(z_{j-1}) , H(z_{j-1}) ]ᵀ

1. À l'interface supérieure d'entrée ($z = z_j$), en rapportant cette fois les deux amplitudes $E^\pm$ à cette interface (au § 3.4, $E_j^+$ était rapportée à la base de la couche : simple choix d'origine des phases, sans effet sur la matrice) :

$$E_a = E^- + E^+ \qquad \text{et} \qquad H_a = \eta (E^- - E^+)$$

Ce qui permet d'exprimer les amplitudes d'ondes en fonction des champs totaux d'entrée :

$$E^- = \frac{1}{2}\left(E_a + \frac{H_a}{\eta}\right) \qquad \text{et} \qquad E^+ = \frac{1}{2}\left(E_a - \frac{H_a}{\eta}\right)$$

2. À l'interface inférieure de sortie ($z = z_{j-1} = z_j - d$), en posant le déphasage $\delta = k_z d$ :

$$\begin{aligned} E_b &= E^- e^{-i\delta} + E^+ e^{+i\delta} = \frac{1}{2}\left(E_a + \frac{H_a}{\eta}\right)e^{-i\delta} + \frac{1}{2}\left(E_a - \frac{H_a}{\eta}\right)e^{+i\delta} = E_a \cos\delta - \frac{i}{\eta} H_a \sin\delta \\[8pt] H_b &= \eta\left(E^- e^{-i\delta} - E^+ e^{+i\delta}\right) = -i\eta E_a \sin\delta + H_a \cos\delta \end{aligned}$$

3. Inversion matricielle pour exprimer les champs d'entrée $(E_a, H_a)$ en fonction des champs de sortie $(E_b, H_b)$ :

$$\begin{pmatrix} E(z_j) \\ H(z_j) \end{pmatrix} = \begin{pmatrix} \cos \delta & \frac{i}{\eta} \sin \delta \\ i \eta \sin \delta & \cos \delta \end{pmatrix} \begin{pmatrix} E(z_{j-1}) \\ H(z_{j-1}) \end{pmatrix} = M_j \begin{pmatrix} E(z_{j-1}) \\ H(z_{j-1}) \end{pmatrix}$$
Propriété fondamentale : Unimodularité Le déterminant de la matrice caractéristique d'une couche vaut rigoureusement l'unité : $$\det(M) = (\cos\delta)(\cos\delta) - \left(\frac{i}{\eta}\sin\delta\right)(i\eta\sin\delta) = \cos^2\delta + \sin^2\delta = 1$$ Cette propriété d'unimodularité ($\det M = 1$) garantit la réciprocité électromagnétique et la stricte conservation du flux d'énergie dans les milieux transparents.
⚡ L'Essentiel de la Section 3 en 4 points clés

4. Méthode des matrices de transfert (TMM) Niveau 2

4.1 Matrice caractéristique d'une couche $j$

Pour une couche d'indice complexe $\hat{n}_j$ et d'épaisseur $d_j$, la matrice $M_j$ s'écrit :

$$M_j = \begin{pmatrix} \cos \delta_j & \frac{i}{\eta_j} \sin \delta_j \\ i \eta_j \sin \delta_j & \cos \delta_j \end{pmatrix}$$

Où $\delta_j$ est la phase optique accumulée : $\delta_j = \frac{2\pi}{\lambda} (\hat{n}_j) d_j \cos \theta_j$.

Le piège de la coupure complexe (Branch Cut) pour les ondes évanescentes

Contexte : La loi de Snell-Descartes donne $S_0 = n_0 \sin \theta_0$. Pour obtenir l'angle de propagation dans la couche $j$, on utilise l'identité trigonométrique $\cos \theta_j = \frac{\sqrt{\hat{n}_j^2 - S_0^2}}{\hat{n}_j}$. Le piège réside dans le calcul informatique de la racine carrée $\sqrt{z}$.

La fonction $f(z) = \sqrt{z}$ est multivaluée dans $\mathbb{C}$. Dans Python/NumPy, np.sqrt(z) renvoie par défaut la racine avec une partie réelle $\ge 0$ et impose une coupure (branch cut) sur l'axe réel négatif.

Re(z) Im(z) 0 Coupure de np.sqrt (Axe Réel -) Zone de danger : TIR (Réflexion Totale Interne) z = -0.125 Diélectriques z = 0.13 Métaux (avec Macleod) z se trouve naturellement ici Ag (-12.4, -0.8i)

Condition physique d'atténuation

Le champ électrique dans la couche $j$ évolue en $E_j(z,t) \propto \exp[-i k_{z,j} z]$ avec $k_{z,j} = \frac{2\pi}{\lambda} \hat{n}_j \cos\theta_j$. Pour que l'amplitude s'atténue en pénétrant dans la matière (absorption ou onde évanescente), il faut impérativement satisfaire :

$$ \text{Im}(\hat{n}_j \cos\theta_j) \leq 0 \quad \text{(Avec la convention } n-i\kappa \text{)}$$

Le cas critique : La Réflexion Totale Interne (TIR)

Contrairement à une croyance répandue, les métaux ne posent pas de problème avec la convention de Macleod : $\hat{n}_{Ag} = 0.12 - 3.45i$ donne, sous $45^\circ$ d'incidence depuis l'air ($S_0^2 = 0.5$), $z = \hat{n}^2 - S_0^2 \approx -12.4 - 0.8i$ (demi-plan inférieur). np.sqrt(z) renvoie $0.12 - 3.52i$, ce qui satisfait bien $\text{Im} \le 0$.

Le véritable problème survient lors d'une Réflexion Totale Interne dans un diélectrique (ex: lumière passant du verre $n=1.5$ à l'air $n=1.0$ à $45^\circ$). On a alors $S_0 = 1.06$ et $z = n^2 - S_0^2 = -0.125$ (pur réel négatif). Dans ce cas précis, np.sqrt(-0.125 + 0j) renvoie +0.353j. La partie imaginaire est positive ! L'onde simulée va croître exponentiellement au lieu de s'évanouir.

Il est donc crucial de forcer manuellement le bon signe dans le code pour les ondes évanescentes (voir Section 10) :

if n_cos_th.imag > 0: 
    n_cos_th = -n_cos_th  # Force l'atténuation physique

4.2 Matrice globale de l'empilement

La matrice globale $M$ du système est le produit matriciel des matrices de chaque couche. On multiplie en partant de la base sur le substrat ($z=0$, couche 1) vers le sommet en contact avec l'air ($z=z_N$, couche $N$) :

$$\begin{pmatrix} E(z_N) \\ H(z_N) \end{pmatrix} = M_N \cdot M_{N-1} \cdots M_1 \begin{pmatrix} E(0) \\ H(0) \end{pmatrix} = M \begin{pmatrix} E(0) \\ H(0) \end{pmatrix}$$ $$\text{avec} \quad M = \begin{pmatrix} m_{11} & m_{12} \\ m_{21} & m_{22} \end{pmatrix} = M_N \cdot M_{N-1} \cdots M_1$$

5. Polarisation et admittance optique Niveau 2

L'admittance optique $\eta_j$ caractérise le rapport entre les champs tangentiels ($H_\parallel / E_\parallel$). En incidence oblique, elle dépend de la polarisation de la lumière :

PolarisationDescription physiqueAdmittance $\eta_j$
TE (s)Champ électrique transverse (parallèle à l'interface)$$\eta_{j,s} = \hat{n}_j \cos \theta_j$$
TM (p)Champ magnétique transverse (parallèle à l'interface)$$\eta_{j,p} = \frac{\hat{n}_j}{\cos \theta_j}$$

6. Coefficients de Fresnel et puissances (R, T) Niveau 2

Pour l'empilement complet, on définit le vecteur caractéristique $\begin{pmatrix} B \\ C \end{pmatrix}$ en multipliant la matrice globale $M$ par le vecteur des conditions aux limites du substrat :

$$\begin{pmatrix} B \\ C \end{pmatrix} = M \cdot \begin{pmatrix} 1 \\ \eta_{sub} \end{pmatrix}$$

Les coefficients d'amplitude en réflexion ($r$) et en transmission ($t$) s'écrivent :

$$r = \frac{\eta_0 B - C}{\eta_0 B + C} \qquad \text{et} \qquad t = \frac{2 \eta_0}{\eta_0 B + C}$$

On en déduit les grandeurs mesurables expérimentalement, à savoir la réflectance $R$ et la transmittance $T$ (avec conservation de l'énergie $R+T+A=1$, où $A$ est l'absorption) :

$$R = |r|^2 \qquad \text{et} \qquad T = \frac{\mathrm{Re}(\eta_{sub})}{\mathrm{Re}(\eta_0)} |t|^2$$
Pourquoi $T \neq |t|^2$ ? Le flux de Poynting en incidence oblique

Une erreur classique chez les étudiants est d'écrire $T = |t|^2$. Or, la transmittance est le ratio des puissances surfaciques (liées au flux du vecteur de Poynting $\vec{S}$), et non pas le simple ratio des carrés des champs électriques.

La puissance transportée par une onde est $|\vec{S}| = \frac{1}{2} \mathrm{Re}(\hat{n}) |E|^2$. Mais la conservation de l'énergie à l'interface dépend de l'énergie qui traverse effectivement cette surface, c'est-à-dire la composante normale du flux : $S_z$.

En incidence oblique (angle $\theta$), un faisceau de largeur spatiale $W$ "s'étale" sur l'interface pour occuper une empreinte de taille $W/\cos\theta$. La puissance par unité de surface de l'interface diminue donc géométriquement d'un facteur $\cos\theta$.

θ Largeur faisceau (W) Empreinte étalée (W / cos θ)

Mathématiquement, projeter ce flux sur la normale donne :

$$S_z = |\vec{S}| \cos\theta = \frac{1}{2} \mathrm{Re}(\underbrace{\hat{n} \cos\theta}_{\text{Admittance }\eta_s}) \, |E_\parallel|^2$$

Remarquez le terme $\hat{n} \cos\theta$ : il correspond *exactement* à la définition de l'admittance optique $\eta_s$ en polarisation TE (s). L'admittance $\eta$ n'est donc pas qu'une commodité mathématique matricielle, elle intègre intrinsèquement l'indice matériel et la projection géométrique du faisceau (cette démonstration est également valide pour TM avec $\eta_p$).

La réflectance reste simple $R = |r|^2$ car l'onde incidente et réfléchie évoluent dans le même milieu (l'admittance s'annule dans le ratio). Mais l'onde transmise entre dans un nouveau substrat, d'où le facteur correctif de transmission faisant intervenir la partie réelle des admittances.

⚡ L'Essentiel de la Section 6 en 3 formules indispensables

7. Substrat d'épaisseur finie Niveau 2

Les équations précédentes supposent un substrat de sortie semi-infini. En réalité, une lame de verre possède une face arrière. En raison de l'épaisseur importante du substrat (millimétrique, $\gg \lambda$), la cohérence optique spatiale est perdue. On ne somme donc plus les amplitudes complexes (interférences), mais les intensités des rebonds multiples incohérents dans le verre.

Formule générale pour une lame à face arrière incohérente
  1. On calcule d'abord la face traitée éclairée depuis l'air : $R_{front}$ et $T_{front}$.
  2. On calcule ensuite la même face vue depuis l'intérieur du substrat : $R'_{front}$ et $T'_{front}$.
  3. On prend la face arrière nue : $R_{back}$ et $T_{back}$.
On obtient alors : $$R_{total} = R_{front} + \frac{T_{front} \cdot T'_{front} \cdot R_{back}}{1 - R'_{front} \cdot R_{back}}$$ $$T_{total} = \frac{T_{front} \cdot T_{back}}{1 - R'_{front} \cdot R_{back}}$$

À retenir : en optique linéaire passive, la transmittance de puissance est réciproque. Autrement dit, si elle est bien définie et bien normalisée, on a $T'_{front} = T_{front}$. Ce qui peut changer avec le sens d'illumination, ce sont surtout $R$ et $A$.

Important : dans le cas d'un substrat fini, $T_{total}$ n'est pas la même chose que $T_{front}$. Il faut appliquer la formule complète ci-dessus ; sinon, on commet une erreur de physique.

Exemple rapide : un verre nu réfléchit environ 4% par face ($R_{front} = R'_{front} = R_{back} \approx 0.04$). La réflectance totale d'une vitre simple vaut alors environ $7.7\%$. La transmittance totale doit, elle aussi, être recalculée avec la formule de substrat fini.

Correction conceptuelle : puissance transmise et absorption La présence d'un milieu absorbant ne suffit pas à créer une différence entre $T$ et $T'$ si l'on compare bien la transmittance de puissance. La bonne subtilité est ailleurs : l'absorption modifie le bilan $R + T + A = 1$ et peut changer $R$ et $A$ selon le sens d'illumination, mais pas la transmission de puissance d'un système réciproque correctement définie.

8. [Avancé] Profil d'intensité du champ électrique $|E(z)|^2$ Niveau 3

Calculer le profil d'intensité à l'intérieur de l'empilement est fondamental, notamment pour évaluer les seuils de dommage laser (LIDT) ou optimiser l'absorption dans des cellules solaires.

Méthode : On connaît le champ transmis dans le substrat à $z=0$ (qui vaut l'amplitude transmise $t$). On peut remonter mathématiquement le long de l'axe $z$ (dans le sens de croissance des couches, de $z=0$ jusqu'au sommet $z=z_N$) couche après couche. Dans la couche $j$ ($z_{j-1} \le z \le z_j$), on part des champs à sa base, obtenus en appliquant successivement $M_1, \dots, M_{j-1}$ au vecteur de départ $t\,(1, \eta_{sub})^T$ :

$$\begin{pmatrix} E(z) \\ H(z) \end{pmatrix} = \begin{pmatrix} \cos \delta_j(z) & \frac{i}{\eta_j} \sin \delta_j(z) \\ i \eta_j \sin \delta_j(z) & \cos \delta_j(z) \end{pmatrix} \begin{pmatrix} E(z_{j-1}) \\ H(z_{j-1}) \end{pmatrix}$$

Où $\delta_j(z) = \frac{2\pi}{\lambda} \hat{n}_j (z - z_{j-1}) \cos \theta_j$ est le déphasage accumulé depuis la base de la couche $j$. Pour une couche unique ($j = 1$, $z_0 = 0$), le départ est directement le champ au substrat, $E(0) = t$.

Substrat (n_sub = 1.5) Couche TiO₂ (n₁ = 2.35) Air incident (n₀ = 1.0) Niveau incident |E₀|² = 1 0 1 2 |E|² z z = 0 (Substrat) z = d (Air) Onde transmise pure Onde comprimée (fort indice) Onde stationnaire (Air)

Profil d'intensité $|E(z)|^2$ calculé par TMM pour une couche de TiO₂ ($n=2.35$) sur substrat ($n_{sub}=1.5$), éclairée depuis l'air à droite ($z \ge d$).
Note physique : L'axe $z$ débute à la surface du substrat ($z=0$) et croît vers la surface en contact avec l'air ($z=d$).

9. Exemples d'application numérique Niveau 1 & 2

Cas 1 : Couche Anti-Reflet (AR) quart-d'onde ($\lambda/4$)

L'objectif est d'annuler les $\sim 4\%$ de réflexion parasite du verre. On dépose une épaisseur telle que le déphasage aller-retour soit de $\pi$ (interférence totalement destructive). L'épaisseur optique requise est $nd = \lambda / 4$.

λ (nm) R (%) 300 550 800 0 4 Verre nu (4%) Verre + AR (MgF₂)

La réflexion s'annule complètement si l'indice de la couche vérifie $n_{couche} = \sqrt{n_{air} \cdot n_{verre}}$. Pour un verre standard, on voudrait $n \approx 1.22$. Le Fluorure de Magnésium (MgF₂, $n=1.38$) est le matériau approchant le plus couramment utilisé en optique classique pour s'approcher de cet idéal.

Encart ingénierie — un optimum nominal n'est pas encore un design

Une épaisseur calculée à six décimales n'est pas une prescription industrielle. La fabrication introduit une résolution finie, des erreurs aléatoires couche par couche et des erreurs corrélées, par exemple un biais de calibration du quartz. La décision doit donc suivre la chaîne complète ci-dessous.

Fil rouge expérimental — prescription Fresnel imposée.

BK7 / H L 2H L H L H L 2H L H L H L 2H L H L / Air

L'empilement comporte exactement 18 couches, numérotées du substrat BK7 vers l'air. En pré-fabrication, BFGS ne peut modifier que les couches 16, 17 et 18 ; les quinze premières définissent l'architecture qui sera déposée. La performance est évaluée sur la fenêtre utile, et non sur tout le spectre :

$$Q_r=\frac{2\,\overline T_{535-565}}{\overline T_{460-500}+\overline T_{620-680}},\qquad \overline T_{pass}=\overline T_{535-565}.$$

Ces moyennes doivent d'abord être mesurées séparément sur T puis combinées par l'étudiant. L'optimisation n'autorise pas à changer le nombre de couches ni à « améliorer » le résultat en libérant les quinze premières. En revanche, la qualification perturbe les 18 couches réellement déposées : une couche figée en conception n'est pas une couche sans erreur en fabrication.

Performancenominale Audit defabricabilité Modèled'incertitude Monte-Carloet centiles Décisiondocumentée

Fabricabilité nominale. On vérifie au minimum le nombre de couches et de matériaux, l'ordre de dépôt, $d_{min}$, $d_{max}$, l'épaisseur totale et la compatibilité de chaque valeur avec la résolution du procédé. Une couche sous le seuil de continuité retenu rend la prescription non fabricable, même si son spectre nominal est excellent.

Modèle pédagogique unique. Chaque couche déposée reçoit une erreur gaussienne indépendante d'écart-type $\sigma=\Delta d/2$. La graine pseudo-aléatoire est figée afin de rendre les études reproductibles et les comparaisons A/B appariées. Le verrou de couche appartient uniquement à l'optimisation BFGS : une couche figée pendant la conception reste physiquement déposée et est donc perturbée pendant la qualification.

Interprétation de $\Delta d$ $\Delta d$ est le paramètre de sévérité du modèle, et non une borne absolue : avec $\sigma=\Delta d/2$, environ 95 % des erreurs idéalisées se trouvent dans $\pm\Delta d$. Ce modèle ne représente ni un biais commun de calibration, ni une quantification du moniteur quartz, ni une dérive corrélée du taux de dépôt.

Rendement et incertitude. Si $x$ réalisations parmi $N$ satisfont à la fois la fabricabilité et le cahier des charges optique, le rendement estimé est $\hat p=x/N$. L'intervalle de Wilson à 95 % est :

$$IC_{95\%}=\frac{\hat p+z^2/(2N)\ \pm\ z\sqrt{\hat p(1-\hat p)/N+z^2/(4N^2)}}{1+z^2/N},\qquad z=1{,}96.$$

Il faut rapporter le rendement avec cet intervalle. Une valeur affichée de 100 % sur un nombre fini de tirages ne signifie jamais « zéro risque ».

IndicateurQuestion d'ingénierieUsage correct
Moyenne ± écart-typeOù se situe la population et quelle est sa dispersion ?Description, pas décision unique
P05Quelle performance basse reste dépassée par 95 % des réalisations ?Grandeur à maximiser : $Q_r$, $T_{pass}$
P95Quel coût élevé n'est dépassé que par 5 % des réalisations ?Grandeur à minimiser : $\overline R$, RMSE
IC95 % de WilsonQuelle est l'incertitude d'échantillonnage sur le rendement ?Comparer la borne basse à l'exigence
Limite de validité Le Monte-Carlo ne vaut que par ses hypothèses. Il ne couvre ni une erreur d'indice, ni la rugosité, ni l'inhomogénéité latérale, ni la température, ni le vieillissement, sauf si ces phénomènes sont explicitement introduits. Une qualification pédagogique est donc une décision conditionnelle au modèle, pas une certification de procédé.

Cas 2 : Filtre de validation à 5 couches (avec métal absorbant)

Ce cas de test complexe permet de valider le code Python, car il inclut des angles obliques, de la polarisation et de l'absorption. Il sert surtout à vérifier deux choses :

Tableau de référence validé Le tableau ci-dessous regroupe les résultats théoriques exacts pour la face traitée seule (substrat semi-infini) et pour la lame complète (avec prise en compte des rebonds multiples incohérents sur la face arrière en verre nu) :
Angle et Polarisation Face avant seule (semi-infini) Lame avec face arrière nue
Réflectance $R$Transmittance $T$Absorption $A$$R_{total}$$T_{total}$
0° (Normale)0.3573190.5568230.0858580.3707500.542352
45° (Polarisation s / TE)0.5866900.3248590.0884510.5975750.312870
45° (Polarisation p / TM)0.4821730.4466390.0711870.4840490.444613

10. Implémentation Numérique (Python) Niveau 2

Le code ci-dessous résume mathématiquement la théorie exposée. Il prend en compte l'absorption, l'angle d'incidence, les polarisations et corrige le problème de la racine complexe pour les ondes évanescentes (voir § 4.1).

Afficher le script Python didactique de la TMM
import numpy as np

def compute_tmm(n_inc, n_exit, n_layers, d_layers, wl, theta0=0.0, pol='s'):
    """
    Calcule les propriétés optiques d'un empilement de couches minces (TMM).
    
    Arguments :
      n_inc, n_exit : Indices complexes du milieu incident (air) et du substrat.
      n_layers      : Liste des indices complexes des couches (n - i*k), de la
                      couche 1 (contre le substrat) à la couche N (contre l'air).
      d_layers      : Liste des épaisseurs physiques des couches (en nm), même ordre.
      wl            : Longueur d'onde de travail (en nm).
      theta0        : Angle d'incidence dans le milieu incident (en radians).
      pol           : Polarisation ('s' pour TE, 'p' pour TM).
      
    Retourne :
      R (Réflectance), T (Transmittance), A (Absorption)
    """
    
    # =====================================================================
    # Étape 1 : Protection de la Convention de Macleod (Assure n - ik)
    # =====================================================================
    # En optique des couches minces, l'onde s'écrit formellement exp(i(wt - kz)).
    # Pour que le milieu absorbe l'énergie (et ne l'amplifie pas), la partie 
    # imaginaire de l'indice complexe doit être strictement négative.
    def enforce_macleod(n): 
        return n if n.imag <= 0 else n.real - 1j * n.imag
    
    n_inc = enforce_macleod(n_inc)
    n_exit = enforce_macleod(n_exit)
    n_layers = [enforce_macleod(n) for n in n_layers]
    
    # Nombre d'onde dans le vide
    k0 = 2 * np.pi / wl
    
    # =====================================================================
    # Étape 2 : Loi de Snell-Descartes et Angles Complexes (Correction TIR)
    # =====================================================================
    # L'invariant de Snell-Descartes (n * sin(theta)) est conservé partout.
    S0 = n_inc * np.sin(theta0) 
    
    def safe_cos_th(n_val):
        # On utilise l'identité trigonométrique classique : 
        # cos(theta) = sqrt(n^2 - (n*sin(theta))^2) / n
        n_cos_th = np.sqrt(n_val**2 - S0**2 + 0j)
        
        # ATTENTION AU PIÈGE NUMÉRIQUE (Coupure complexe / Branch cut) :
        # En cas de Réflexion Totale Interne (TIR) ou d'onde évanescente, 
        # numpy peut renvoyer une partie imaginaire positive, ce qui simule 
        # un gain non-physique d'énergie. On force la décroissance physique :
        if n_cos_th.imag > 0: 
            n_cos_th = -n_cos_th 
        return n_cos_th / n_val

    # Calcul des cosinus (complexes si TIR/absorption) pour chaque milieu
    cos_inc = np.cos(theta0) 
    cos_exit = safe_cos_th(n_exit)
    cos_layers = [safe_cos_th(n) for n in n_layers]
    
    # =====================================================================
    # Étape 3 : Calcul des Admittances optiques (eta)
    # =====================================================================
    # L'admittance relie le champ magnétique au champ électrique (H = eta * E)
    def get_eta(n_val, cos_th, pol):
        if pol.lower() == 's':
            # Polarisation TE (Champ E transverse) : projection par multiplication
            return n_val * cos_th       
        else:
            # Polarisation TM (Champ H transverse) : projection par division
            return n_val / cos_th       
            
    eta_inc = get_eta(n_inc, cos_inc, pol)
    eta_exit = get_eta(n_exit, cos_exit, pol)
    eta_layers = [get_eta(n_layers[i], cos_layers[i], pol) for i in range(len(n_layers))]
    
    # =====================================================================
    # Étape 4 : Multiplication Matricielle (Du substrat vers l'air)
    # =====================================================================
    # On initialise la matrice système globale à la matrice Identité
    M_sys = np.eye(2, dtype=complex)
        
    for i in range(len(n_layers)):
        # Calcul du déphasage optique local (delta) accumulé dans la couche i
        delta = k0 * n_layers[i] * d_layers[i] * cos_layers[i]
        c, s = np.cos(delta), 1j * np.sin(delta)
        eta = eta_layers[i]
        
        # Construction de la matrice caractéristique 2x2 de la couche locale i
        M_i = np.array([
            [c, s / eta], 
            [s * eta, c]
        ], dtype=complex)
        
        # Accumulation : M_sys = M_i * M_sys
        # L'ordre de multiplication est crucial : on part du substrat (sortie) 
        # vers le milieu incident (entrée), donc de droite à gauche.
        M_sys = np.dot(M_i, M_sys)

    # =====================================================================
    # Étape 5 : Extraction des coefficients d'amplitude de Fresnel
    # =====================================================================
    # On applique la matrice globale aux conditions aux limites du substrat
    # Équation matricielle : [B, C]^T = M_sys * [1, eta_exit]^T
    B = M_sys[0,0]*1 + M_sys[0,1]*eta_exit
    C = M_sys[1,0]*1 + M_sys[1,1]*eta_exit
    
    # Calcul des coefficients complexes de réflexion (r) et transmission (t)
    r = (eta_inc * B - C) / (eta_inc * B + C)
    t = (2.0 * eta_inc) / (eta_inc * B + C)
    
    # =====================================================================
    # Étape 6 : Bilan des puissances (Conservation de l'énergie)
    # =====================================================================
    # La réflectance se mesure dans le même milieu, donc un simple module carré
    R = abs(r)**2
    
    # Correction du vecteur de Poynting (Flux d'énergie) :
    # La transmittance nécessite de comparer la partie réelle des admittances
    # des milieux extrêmes car l'onde change de milieu de propagation.
    T_factor = (eta_exit.real) / (eta_inc.real) if eta_inc.real > 1e-12 else 0.0
    T = T_factor * abs(t)**2
    
    # L'énergie manquante est nécessairement absorbée par l'empilement
    A = 1.0 - R - T
    
    return R, T, A

# --- Exemple d'utilisation simple (Verre nu) ---
# Pour un verre d'indice 1.5 dans l'air (1.0) à 550 nm en incidence normale :
# R, T, A = compute_tmm(1.0, 1.5, [], [], 550) 
# print(f"Réflectance du verre nu : {R*100:.2f}%") # Affichera ~4.00%